linux: Zap /proc/interrupts count when a dynamic IRQ is unbound.
authorKeir Fraser <keir@xensource.com>
Wed, 7 Feb 2007 00:39:48 +0000 (00:39 +0000)
committerKeir Fraser <keir@xensource.com>
Wed, 7 Feb 2007 00:39:48 +0000 (00:39 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c

index 51436b69cc1f8cb9e4732c033911a284c286ec9e..3e66f3be45bd2488abe7452b8b3f237de2cc3e7d 100644 (file)
@@ -424,7 +424,7 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu)
 static void unbind_from_irq(unsigned int irq)
 {
        struct evtchn_close close;
-       int evtchn = evtchn_from_irq(irq);
+       int cpu, evtchn = evtchn_from_irq(irq);
 
        spin_lock(&irq_mapping_update_lock);
 
@@ -452,6 +452,10 @@ static void unbind_from_irq(unsigned int irq)
 
                evtchn_to_irq[evtchn] = -1;
                irq_info[irq] = IRQ_UNBOUND;
+
+               /* Zap stats across IRQ changes of use. */
+               for_each_possible_cpu(cpu)
+                       kstat_cpu(cpu).irqs[irq] = 0;
        }
 
        spin_unlock(&irq_mapping_update_lock);